import asyncio
from typing import AsyncIterator, Any

# 你提供的异步enumerate函数（保留原逻辑）
async def aenumerate(
    iterable: AsyncIterator[Any], start: int = 0
) -> AsyncIterator[tuple[int, Any]]:
    """Async version of enumerate function."""
    i = start
    async for x in iterable:
        # 调试点1：查看每次yield前的索引和元素（debug时可打断点）
        print(f"[aenumerate调试] 索引{i} → 元素{x}")
        yield i, x
        i += 1

# 示例1：创建一个异步生成器（模拟异步数据源，如API请求、异步文件读取）
async def async_data_generator() -> AsyncIterator[str]:
    """异步迭代器：模拟3个异步获取的数据"""
    data_list = ["异步数据A", "异步数据B", "异步数据C"]
    for data in data_list:
        # 模拟异步操作耗时（如等待API响应）
        await asyncio.sleep(0.5)
        # 调试点2：查看每次生成的原始数据（debug时可打断点）
        print(f"[生成器调试] 产出原始数据：{data}")
        yield data

# 主函数：串联异步逻辑
async def main():
    print("===== 开始异步遍历 =====")
    # 调用aenumerate，搭配异步生成器（start=10，索引从10开始，方便区分）
    async for idx, item in aenumerate(async_data_generator(), start=10):
        # 调试点3：查看最终拿到的索引+元素（debug时可打断点）
        print(f"[主逻辑] 索引{idx} → 处理结果：{item}（已完成）")
    print("===== 异步遍历结束 =====")

# 运行主函数（Python 3.7+直接运行）
if __name__ == "__main__":
    asyncio.run(main())